const express = require('express');
const app = express();

// 使用中间件 => 添加允许跨域的响应头 => 解决跨域问题
app.use(function(req, res, next){
  res.setHeader('Access-Control-Allow-Origin', '*');  // 允许跨域请求
  res.setHeader('Access-Control-Allow-Headers', "*"); // 该响应头 允许客户端可以设置『自定义』请求头  
  res.setHeader('Access-Control-Allow-Methods', "*"); // 允许各种请求方式进行跨域请求 get post delete put
  next();
});

// 使用中间件 => 解析请求体参数
app.use(express.urlencoded({extended: false}))
app.use(express.json())
// 使用中间件 => 部署静态资源
app.use(express.static('public'))

// 注册路由(处理三种参数)
app.all('/server/:id', (req, res) => {
  console.log('收到了请求: ', req.method)

  console.log('query参数: ', req.query)
  console.log('params参数: ', req.params)
  console.log('body参数:', req.body)

  res.send({
    code: 2000,
    data: {
      name: 'tom',
      age: 12
    },
    message: '获取数据成功'
  })
});

// 延时响应
//  如果要传递参数 这里一定要 :xxx 接收参数
app.post('/delay-server/:xxx', (req, res) => {
  console.log('/delay-server 服务器正在处理请求')
  console.log('query参数: ', req.query)
  console.log('params参数: ', req.params)
  console.log('body参数:', req.body)
  setTimeout(() => {
    res.send('这是一个响应哦!');
  }, 2000);
});

app.all('/json-server/:name', (req, res) => {
  
  console.log('请求方式:', req.method)
  console.log('query参数: ', req.query)
  console.log('params参数: ', req.params)
  console.log('body参数:', req.body)
  
  res.send({name: 'Tom', age: 12})
});

app.listen(8081, () => {
    console.log('8081 端口服务已经启动....');
})
